FA
pedido

[Pedido] Ganhar Item quem Bater no Monstro

Por Farathor, 15 de jul. de 2015 em Scripts

22
4k
zipter98Z
09 de agosto de 2015 às 22:10


local config = {

name = "monster_name", --Nome do monstro.

minDamage = 7000, --Dano mínimo para receber as recompensas.

items = {

prize = {itemid, count}, --{ID do item, quantidade}

medal = xxx, --ID da medalha.

},

storage = 91828,

}

 

function onStatsChange(cid, attacker, type, combat, value)

if isPlayer(attacker) and isMonster(cid) and getCreatureName(cid) == config.name and type == STATSCHANGE_HEALTHLOSS then

local damage = getPlayerStorageValue(attacker, config.storage) < 1 and 0 or getPlayerStorageValue(attacker, config.storage)

setPlayerStorageValue(attacker, config.storage, damage + value)

end

return true

end

 

function onDeath(cid, corpse, deathList)

for _, pid in pairs(deathList) do

local damage = getPlayerStorageValue(pid, config.storage)

if damage >= config.minDamage then

local item = doCreateItemEx(config.items.prize[1], config.items.prize[2])

doPlayerSendTextMessage(pid, 27, "For helping killing "..config.name..", you received a medal and "..config.items.prize[2].."x "..getItemNameById(config.items.prize[1])..".")

doPlayerSendMailByName(getCreatureName(pid), item)

doItemSetAttribute(doPlayerAddItem(pid, config.items.medal, 1), "description", "Medalha de honra ganha por "..getCreatureName(pid).." por ajudar a derrotar o "..config.name.." no dia "..os.date("%D")..".")

setPlayerStorageValue(pid, config.storage, -1)

end

end

db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..config.storage)

return true

end

 

Editado Agosto 11 por zipter98

DeCarvalhoD
10 de agosto de 2015 às 00:21

Vou ter que fazer e testar na minha maquina, agora estou no trabalho, sem condições confused.gif

 

Bom dia :) passando pra perguntar se você obteve algum sucesso?

 

Grato

BrunoB
10 de agosto de 2015 às 08:42

Bom dia :) passando pra perguntar se você obteve algum sucesso?

 

Grato

Sem sucesso :( esse fds foi corrido pra mim, logo tentarei novamente, abraço!

3 semanas depois...
FarathorF
24 de agosto de 2015 às 10:17

para eu adicionar mais items como recompensa é só eu colocar mais virgulas? assim? prize = {2160, count},{2133,count},?

BrunoB
24 de agosto de 2015 às 10:41

para eu adicionar mais items como recompensa é só eu colocar mais virgulas? assim? prize = {2160, count},{2133,count},?

Tenta assim:

 

local config = {
    name = "monster_name", --Nome do monstro.
    minDamage = 7000, --Dano mínimo para receber as recompensas.
    items = {
        prize = {
            {itemid, count}, --{ID do item, quantidade}
            {itemid, count}, --{ID do item, quantidade}
            {itemid, count}  --{ID do item, quantidade}
        },
        medal = xxx, --ID da medalha.
    },
    storage = 91828,
}
 
function onStatsChange(cid, attacker, type, combat, value)
    if isPlayer(attacker) and isMonster(cid) and getCreatureName(cid) == config.name and type == STATSCHANGE_HEALTHLOSS then
        local damage = getPlayerStorageValue(attacker, config.storage) < 1 and 0 or getPlayerStorageValue(attacker, config.storage)
        setPlayerStorageValue(attacker, config.storage, damage + value)
    end
    return true
end
 
function onDeath(cid, corpse, deathList)
    for _, pid in pairs(deathList) do
        local damage = getPlayerStorageValue(pid, config.storage)
        if damage >= config.minDamage then
            local str = ""
            for _, item in pairs(config.items.prize) do
                str = str .. ", " .. item[2] .."x " .. getItemNameById(item[1])
                doPlayerAddItem(pid, item[1], item[2])
            end
            doPlayerSendTextMessage(pid, 27, "Por matar um "..config.name..", voce recebeu uma medalha e " .. string.sub(str, 3, #str) ..".")
            doItemSetAttribute(doPlayerAddItem(pid, config.items.medal, 1), "description", "Medalha de honra ganha por "..getCreatureName(pid).." por ajudar a derrotar o "..config.name.." no dia "..os.date("%D")..".")
            setPlayerStorageValue(pid, config.storage, -1)
        end
    end
    db.executeQuery("UPDATE player_storage SET value = -1 WHERE key = "..config.storage)
    return true
end

 

Editado Agosto 24 por Bruno Minervino

1 mês depois...
LumusL
30 de setembro de 2015 às 17:30

Tópico Movido
Este tópico foi movido de "OTServSuporte OTServSuporte Scripting"
para "OTServSuporte OTServSuporte ScriptingPedidos e dúvidas resolvidos - Scripting".

 

 

5 meses depois...
FarathorF
06 de fevereiro de 2016 às 01:15

cara, eu testei aqui, não funcionou, mas tbm nao deu erro